package com.adb.util;

import android.graphics.Bitmap;

public class ImageUtil {

	public static String sdcardDir = "avSoduku/imgCache";

	/**
	 * 保持图片到sdcard<br/>
	 * 文件名必须用formatImageURL格式化,以保证存入的图片和读取的图片时同一张图片
	 * 
	 * @param imageURL
	 * @param bitmap
	 */
	public static void saveImage(String imageURL, Bitmap bitmap) {
		FileUtil.saveImageInSdcard(sdcardDir, formatImageURL(imageURL), bitmap);
	}

	/**
	 * 从sdcard获取图片<br/>
	 * 文件名必须用formatImageURL格式化,以保证存入的图片和读取的图片时同一张图片
	 * 
	 * @param imageURL
	 * @return
	 */
	public static Bitmap getImage(String imageURL) {
		String path = sdcardDir + "/" + formatImageURL(imageURL);
		return FileUtil.getImageInSdcard(path);
	}

	/**
	 * 格式url使其能作为文件名保存,并得到最后的图片文件名,用于保存和读取<br/>
	 * 将在没有图片后缀的文件名最后加上.jpg<br/>
	 * 保存和读取图片,必须调用本方法,格式化imageURL作为文件名
	 * 
	 * @param URL
	 * @return
	 */
	public static String formatImageURL(String imageURL) {
		String fileName = imageURL.replace("/", "-");
		fileName = fileName.replace("\\", "-");
		fileName = fileName.replace(":", "-");
		if (!FileUtil.isImage(fileName)) {
			fileName += ".jpg";
		}
		return fileName;
	}

	/**
	 * 从sdcard或者网络获取图片,适合图片本身不会发生变化的情况<br/>
	 * 1、根据url检查sdcard中是否有图片,有:直接返回图片<br/>
	 * 2、没有: 根据url从网络加载图片,将加载后的图片返回并且缓存到sdcard<br/>
	 * 
	 * @param URL
	 * @throws IOException
	 */
	// private static Bitmap getImageWithSdcardCache(String imageURL) {
	// Bitmap bitmap = getImage(imageURL); // 从sdcard缓存获取图片
	// if (null != bitmap) {
	// System.out.println("从sdcard获取到图片");
	// return bitmap;
	// }
	// return getImageNoCache(imageURL);
	// }

	/**
	 * 根据url从网络加载图片,将加载后的图片返回并且缓存到sdcard<br/>
	 * 用于刷新图片等情况<br/>
	 * 
	 * @param URL
	 * @throws IOException
	 */
	// private static Bitmap getImageNoCache(String imageURL) {
	// System.out.println("从网络获取图片");
	// try {
	// URL url = new URL(imageURL);
	// URLConnection connection;
	// connection = url.openConnection();
	// connection.setConnectTimeout(3000);
	// connection.setReadTimeout(5000);
	// // connection.setUseCaches(true);// 使用浏览器缓存
	// Bitmap bitmap = BitmapFactory.decodeStream((InputStream) connection
	// .getContent());
	// saveImage(imageURL, bitmap); // 保持图片到sdcard
	// return bitmap;
	// } catch (IOException e) {
	//
	// }
	// return null;
	// }

}
